<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>this练习题</title>
</head>

<body>
    <script>
        //  //T1.
        //   function fun() {
        //     console.log(this.s);
        //   }
        //   var obj = {
        //     s: 1,
        //     f: fun,
        //   };
        //   var s = 2;
        //   obj.f();

        //T2.
        // function fun() {
        //     console.log(this.s); // 普通调用 该函数内的 this 指向 window 输出2
        //     var obj = {
        //         s: 1,
        //         f: fun,
        //     };
        // }
        // var s = 2;
        // fun();

        // //T3.
        //   var A = {
        //     name: "jmq",
        //     f: function () {
        //       console.log(this.name);
        //     },
        //   };
        //   var B = {
        //     name: "syc",
        //   };
        //   B.f = A.f;
        //   A.f();
        //   B.f();

        // //T4.
        // function fo() {
        //   console.log(this.a);
        // }
        // var o1 = {
        //   a: 3,
        // };
        // var o2 = {
        //   a: 6,
        // };
        // var a = 9;
        // o1.f = fo;
        // console.log(o1);
        // o2.f = o1.f;
        // o1.f(); // 输出什么？
        // o2.f(); // 输出什么？

        ////T5.
        // function foo() {
        //   console.log(this.a);
        // }
        // var obj2 = {
        //   a: 2,
        //   fn: foo,
        // };
        // var obj1 = {
        //   a: 1,
        //   o1: obj2,
        // };
        // obj1.o1.fn(); // 输出的是啥？

        // //T6.
        // var a = 10;
        // var obj = {
        //   a: 120,
        //   method: function () {
        //     var bar = function () {
        //       console.log(this.a); // 输出什么？
        //     };
        //     bar();
        //     return this.a; // 输出什么？
        //   },
        // };
        // console.log(obj.method());

        //T7.
        // var fullName = "language";
        // var obj = {
        //   fullName: "javascript",
        //   prop: {
        //     getFullName: function () {
        //       return this.fullName;
        //     },
        //   },
        // };
        // console.log(obj.prop.getFullName()); // 这里输出什么？
        // var test = obj.prop.getFullName;
        // console.log(test()); // 这里输出什么

        // //T8.
        // function fn() {
        //   console.log(this);
        // }
        // setInterval(fn, 1000); // 这里打印啥？

        // //T9.
        // var k = {
        //   a: 1,
        //   sing: function () {
        //     console.log(this);
        //   },
        // };
        // setTimeout(k.sing(), 1000); // 这里打印的是啥？

        // //T10.
        // var value = 8;
        // var obj = {
        //   value: 10,
        //   fn: () => {
        //     console.log(this.value); //打印什么
        //   },
        // };
        // obj.fn();
    </script>
</body>

</html>